<?php
/**
 * Created by PhpStorm.
 * User: jungshen
 * Date: 2019/2/25
 * Time: 17:48
 */

namespace app\api\service;


use think\Db;
use think\Exception;

class MemberService
{
    /**
     * 资料是否齐全
     * @param $mid
     * @return bool
     */
    static function is_full_info($mid){
        //TODO::判断用户资料是否完善
        $credit_log=Db::name('credit_log')
            ->where('mid',$mid)
            ->where('type',PERFECT_INFORMATION)
            ->count();
        if($credit_log<1){
            return true;
        }
        return false;
    }

    /**
     * 根据信用积分获取信用等级名称
     * @param $credit
     * @return string
     */
    static function credit_level($credit){
        if($credit>=100){
            return 'A级信用';
        }elseif ($credit>=90){
            return 'B级信用';
        }elseif ($credit>=80){
            return 'C级信用';
        }elseif ($credit>=70){
            return 'D级信用';
        }else{
            return '风险用户';
        }
    }

    /**
     * 获取信用等级数组
     */
    static function credit_arr(){
        $arr[0]['name']='A(100以上)';
        $arr[0]['credit']='100';
        $arr[1]['name']='B(90以上)';
        $arr[1]['credit']='90';
        $arr[2]['name']='C(80以上)';
        $arr[2]['credit']='80';
        $arr[3]['name']='D(70以上)';
        $arr[3]['credit']='70';
        $arr[4]['name']='风险(60以下)';
        $arr[4]['credit']='0';

        return $arr;
    }

    /**
     * 获取分润配置
     * @return array
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    static function get_rebate(){
        $rebate_arr=explode('|',trim(sysconf('rebate_obj')));
        return $rebate_arr;
    }


    /**
     * 给用户分润
     * @author jungshen
     * @param $uid 消费者ID
     * @param $money 消费金额
     * @param $desc 描述
     * @return bool
     */
    static function rebate($uid,$money,$desc){
        Db::transaction(function() use($uid,$money,$desc){
            $rebate_arr=self::get_rebate();
            $parent_id=Db::name('store_member')
                ->where('id',$uid)
                ->value('parent_id');
            if(!$parent_id)return true;
            $parent=Db::name('store_member')
                ->where('id',$parent_id)
                ->field('id,parent_id')
                ->find();
            foreach ($rebate_arr as $k=>$v){
//            $k+1 :第几级
                if(!$parent)break;
                $rebate_money=intval($v*$money*100)/100;
                if($rebate_money>0){
                    //给这一级分钱
                    log_account_change($parent['id'],$rebate_money,0,$desc,2);
                }
                $parent=Db::name('store_member')
                    ->where('id',$parent['parent_id'])
                    ->field('id,parent_id')
                    ->find();
            }
        });
        return true;
    }

    /**
     * 判断会员是否是超级会员
     * @param $member 会员记录
     * @return bool
     */
    static function isSuper($member){
        switch ($member['type']){
            case 0:
                return false;
            case 1:
                $grade_id=Db::name('worker_info')
                    ->where('mid',$member['id'])
                    ->value('grade_id');
                break;
            case 2:
                $grade_id=Db::name('supplier_info')
                    ->where('mid',$member['id'])
                    ->value('grade_id');
        }
        $super=Db::name('store_member_grade')
            ->where('id',$grade_id)
            ->value('super');
        return $super?true:false;
    }

}